package application

import (
	"fabric-go-sdk/sdk/sdkInfo/channelInfo"
	"fabric-go-sdk/sdk/sdkInfo/ordererInfo"
	"fmt"
	"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)

// 完成  重新改成新的模式
//  调用者需要传来channelid、oegname、username
//  1、使用一个方法进行如下判断
//   若缺channelid则直接返回错误
//   若缺 oegname、username 则使用默认的值（除了调用链码操作）
//  2、 判断 channelID、orgname、username是否正确
//      若不正确直接返回
//      若正确进行下一步
//  3、 修改以下函数适合适合现在的架构

//  todo -之后改成在这里获取客户端，然后传给orginfo的方法

//  todo -可能需要增加更新fabSDK的操作，因为增加通道会修改config.yaml文件
type Application struct {
	// 通道信息
	Channels map[string]*channelInfo.ChannelInfo // key-channelID  value-channelInfo实例
	// 排序服务信息
	Orderer *ordererInfo.OrdererOrgInfo
	//FabricSDK
	FabSDK *fabsdk.FabricSDK
}

// LeAndChClientParams 使用账本客户端和通道客户端时默认参数
func (a *Application) LeAndChClientParams(channelId string, orgName string, userName string) (channelid string, orgname string, username string, err error) {
	fmt.Println("===LeAndChClientParams channelId===", channelId)
	if channelId == "" {
		return "", "", "", fmt.Errorf("LeClientParams err:channelId不能为空.")
	}
	if _, ok := a.Channels[channelId]; !ok {
		return "", "", "", fmt.Errorf("LeClientParams err:channelId不存在.")
	}
	channelid = channelId
	if orgName == "" {
		orgname = a.Channels[channelid].DefaultOrg
		username = a.Channels[channelid].DefaultUser
	}
	orgname = orgName
	if userName == "" {
		username = a.Channels[channelid].DefaultUser
	}
	username = userName
	return
}
